28.1.2 资源服务器

为了使用access token,你需要一个资源服务器(可以跟授权服务器是同一个)。创建资源服务器很简单,只需要添加@EnableResourceServer,提供一些配置以允许服务器解码access token。如果应用也是授权服务器,由于它知道如何去解码tokens,所以也就不需要做其他事情。如果你的app是独立的服务,那你就需要给它添加以下可选配置中的某一项:

  • security.oauth2.resource.user-info-uri用于/me资源(例如,PWS的https://uaa.run.pivotal.io/userinfo)。
  • security.oauth2.resource.token-info-uri用于token解码端点(例如,PWS的https://uaa.run.pivotal.io/check_token)。

如果user-info-uritoken-info-uri都指定了,你可以设置flag筛选出最想要的那个(默认prefer-token-info=true)。

另外,如果token是JWTs,你可以配置security.oauth2.resource.jwt.key-value解码它们(key是验签的key)。验签的键值可以是一个对称密钥,也可以是PEM编码的RSA公钥。如果你没有key,并且它是公开的,你可以通过security.oauth2.resource.jwt.key-uri提供一个下载URI(有一个"value"字段的JSON对象),例如,在PWS平台上:

$ curl https://uaa.run.pivotal.io/token_key
{"alg":"SHA256withRSA","value":"-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n"}

如果你使用security.oauth2.resource.jwt.key-uri,授权服务器需要在应用启动时也运行起来,如果找不到key,它将输出warning,并告诉你如何解决。